package org.base.mode.config.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 登录拦截器
 * CRC
 * 2022/2/7
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {


    /**
     * 前置拦截器（访问接口之前处理）
     *
     * @param request
     * @param response
     * @param handler
     * @return 返回 true 表示可以访问，false 表示不允许访问
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 这里可以处理登录认证请求
        // 比如如果使用 token 认证登录，可以先从请求体中获取 token 判断是否正确
        // 如果正确返回 true (允许访问) ，错误返回 false (不允许访问)
        // PS: 前后端分离项目中，通常使用 token 进行认证请求


        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                                Exception ex) throws Exception {

    }
}
